#ifndef _RENZO_SCENE_MANAGER_
#define _RENZO_SCENE_MANAGER_

#include "RenzoMustHave.h"
#include <map>

using namespace std;
namespace Renzo
{
class RENZODERER_API SceneManager
{
public:
	SceneManager(void);
	virtual ~SceneManager(void);

public:
	/**
	 Register new loader/saver to SceneManager
	*/
	void registerFormat(SceneIO* io);
	void unregisterFormat(const String& ext);
	void unregisterFormat(SceneIO* io);

	/**
	 Load/save
	*/
	SceneNode* load(const String& file);
	void save(const String& file, SceneNode* root);

	/**
	 Automatically generate a unique object name
	*/
	const String genObjectName();

protected:
	typedef std::map<String, SceneIO*> SceneIOList;
	SceneIOList sceneios;
};
}

#endif